package main

import "fmt"

type Queue []interface {}


func (q *Queue) Push(v interface{}) {
	*q = append(*q, v)
}

func (q *Queue) Pop() interface{} {
	head := (*q)[0]
	*q = (*q)[1:]
	return head
}

func (q *Queue) IsEmpty() bool {
	return len(*q) == 0
}


func main() {
	var aa = Queue{}
	aa.Push(2)
	aa.Push(2)
	aa.Push(2)
	aa.Push(2)
	aa.Push(2)
	aa.Push(2)
	aa.Push("aaaa")
	fmt.Print(aa)
	fmt.Println()
	fmt.Println(aa.Pop())
	fmt.Print(aa)
	fmt.Println()
	fmt.Println(aa.IsEmpty())
}
